using System;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;

namespace GameLogic
{
    public static class GameFlow
    {
        public static async UniTask StartNewGameAsync(CancellationToken token)
        {
            try
            {
                // 可选：显示 Loading
                // await UIModule.Instance.ShowUIAsyncAwait<LoadingUI>();

                // 关闭菜单（若还在）
                if (UIModule.Instance != null)
                {
                    UIModule.Instance.CloseUI<MenuUI>();
                }

                // 预加载（如需）
                // await GameModule.Content.PreloadAsync(token);

                // 切换到目标场景
                await GameModule.Scene.LoadSceneAsync("FarmScene");

                // 场景相关系统初始化（如需）
                // await GameModule.Battle.InitAsync(token);

                // 打开主 UI
                await UIModule.Instance.ShowUIAsyncAwait<MainUI>();

                // 可选：收起 Loading
                // await UIModule.Instance.CloseUIAsync<LoadingUI>();
            }
            catch (OperationCanceledException)
            {
                // 用户取消，不视为错误
            }
            catch (Exception ex)
            {
                Debug.LogError($"StartNewGame 流程出错: {ex}");
                // 可选：弹错误对话框
            }
        }
    }
}